package login;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.HashMap;

// 登录成功之后跳转到的主页
@WebServlet("/index")
public class IndexServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 首页中也先获取session，此处的session正是刚才登陆页面的时候登陆成功后创建出来的
        // 此处参数写作false即可，表示不新建；如果不存在返回null就行
        HttpSession session = req.getSession(false);

        // 此处的会话是根据sessionId来查找哈希表的
        // 只要把浏览器处的cookie删了，不登录就直接访问index页面，此时就会触发该逻辑了。
        // 那要想触发这个if，除了删除cookie，也可以删除服务器这里存储会话的哈希表，
        // 但是该哈希表是隐藏在Servlet背后的，没有api能够直接访问。
        // 而这个哈希表应该是内存中的变量，一旦重启服务器tomcat不应该就把内存的数据重置了吗？
        // 其实不一定。
        // 正常来说，重启tomcat之后已有的会话是会丢失的
        // 但是IDEA专业版以及高版本的smart tomcat可能会在重启服务器的时候将会话自动保存到硬盘，下次启动的时候自动恢复。

        if(session == null) {
            resp.setStatus(403);
            resp.setContentType("text/html; charset=utf8");
            resp.getWriter().write("您尚未登陆 暂不能访问主页！");
            return;
        }

        // 因为getAttribute返回类型是object，所以需要进行强转!!
        String userName = (String) session.getAttribute("userName");
        resp.setContentType("text/html; charset=utf8");
        resp.getWriter().write(userName + "欢迎来到主页!");
    }
}
